package com.atde._05_behavioral_design_patterns.iterator;


import java.util.Iterator;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._05_behavioral_design_patterns.iterator
 * @Author: Del
 * @CreateTime: 2025-06-27  11:27
 * @Description: 迭代器模式中的具体迭代器实现类
 * 用于遍历以数组形式存储的 [Department] 对象
 * @Version: 1.0
 */
public class ComputerCollegeIterator implements Iterator {
    // 这里我们需要 Department 是以怎样的方式存储的
    // 以数组的方式存储
    Department[] departments;

    /**
     * 当前遍历的索引位置，初始值为 0 表示从第一个元素开始
     */
    int position = 0;

    public ComputerCollegeIterator(Department[] departments) {
        this.departments = departments;
    }

    /**
     * 判断是否还有下一个有效的部门对象可供遍历
     * 检查当前位置是否在数组范围内且当前元素不为空
     * @return
     */
    @Override
    public boolean hasNext() {
        return position < departments.length && departments[position] != null;
    }

    /**
     * 获取当前索引处的部门对象，并将遍历位置向后移动一位
     *
     * @return 返回当前索引位置的 Department 对象示例
     */
    @Override
    public Object next() {
        Department department = departments[position];
        position += 1;
        return department;
    }

    /**
     * 不支持移除操作，该方法为空实现
     * 因为当前迭代器设计为只读遍历，不修改底层数据结构
     */
    @Override
    public void remove() {}
}
